import csv
import os

def read_file(filename):
    info=[]
    f = open(filename)
    line=f.readline()
    while line:
        res=line.split(':')
        res[4]=res[4].replace('\n', '')
        info.append(res)
        line=f.readline()
    f.close()
    return info

def get_data(info):
    result=[]
    for index in info:
        i=int(index[2])
        value=float(index[4])
        if(len(result)<=i):
            p_result=[]
            p_result.append(value)
            result.append(p_result)
        else:
            result[i].append(value)
    return result

def txt_to_csv(filename):
    # filename= "data.txt"
    info = read_file(filename)
    # 转换成100000*44维的数据
    result = get_data(info)
    f = open('data.csv', 'w', encoding='utf-8',newline='')
    csv_writer=csv.writer(f)
    for res in result:
        csv_writer.writerow(res)
    f.close()
    return result

input_example = 'data.txt'
output_example = 'data_example.csv'
output = txt_to_csv(input_example)

def read_csv(csv_name):
    f = open(csv_name, 'r')
    reader = csv.reader(f)
    result = []
    for row in reader:
        row = [float(s) for s in row]
        result.append(row)
    return result

def compare(o_e, o):
    result_example=read_csv(o_e)
    if (result_example==o):
        return True
    else:
        return False

print("")
# 用例目的
print("该用例目的为：对文本文件中的原始数据进行数据提取和格式转换并写入csv文件中")
print("")
# 子用例编号
print("子用例编号：txt_to_csv_1")
print("")
print("****************************")
print("当前输入文件名为：")
print(input_example)

print("****************************")
print("读取输入文件内容格式为：")
print([len(read_file(input_example)),len(read_file(input_example)[0])])

print("****************************")
print("由于数据量过大，展示输入文件内容中的前五行:")
print(read_file(input_example)[:5])

print("")

print("****************************")
print("当前输出格式为:")
print([len(output),len(output[0])])

print("****************************")
print("由于数据量过大，展示输出中的前五行:")
print(output[:5])

print("")

print("****************************")
print("由于数据量过大，展示预设输出中的前五行:")
print(read_csv(output_example)[:5])

print("")

print("****************************")
print("是否正确:")
# 输出对比结果
# 需要写一个compare函数
if compare(output_example, output):
    print("输出与预定目标相符")
else:
    print("输出与预定目标不符")
# 输出对比结果

print("\n")
